import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// Store 商店；存储
export default new Vuex.Store({
  // 状态，就是为了保障数据的通用
  state: {
    num: 200,
    msg: 'abc',
    shopInfo: {},
    goodsList: [],
    // 用来控制动画的类名
    cartFlag: false
  },
  // 转变，改变
  mutations: {
    changeFlag(state) {
      state.cartFlag = true
    },
    closeFlag(state) {
      state.cartFlag = false
    },
    setVal(state, o) {
      state.shopInfo = o
    },
    setGoodsList(state, o) {
      state.goodsList = o
    },
    // 清空商品列表
    clearGoodsList(state) {
      for (const v of state.goodsList) {
        for (const k of v.foods) {
          if (k.num !== 0) {
            k.num = 0
          }
        }
      }
    }
  },
  // 行动; 行为 (一般用来处理异步)
  actions: {},
  // 模块
  modules: {},
  // 获取者，访问者
  getters: {
    // 这里的写法跟计算属性是一样的，也需要return一个结果
    // getter的作用对原有数据进行过滤和包装，但是不操作数据
    getChooseGoods(state) {
      const arr = []
      for (const v of state.goodsList) {
        for (const k of v.foods) {
          if (k.num !== 0) {
            arr.push(k)
          }
        }
      }
      return arr
    }
  }
})
